package com.itany.corejava.code14_lambda;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月09日10:37
 */
public class Test05_函数型接口 {

    public static void main(String[] args) {
        List<Integer> list= Arrays.asList(1,2,3,4,5,6,8,9);
        // Integer num=testFunction(new Function<List<Integer>, Integer>() {
        //     @Override
        //     public Integer apply(List<Integer> integers) {
        //         return integers.size();
        //     }
        // },list);
        // System.out.println(num);

        //Lambda表达式
        Integer num=testFunction(integers -> integers.size(),list);
        System.out.println(num);
    }

    // 函数型接口Function<T,R> 有参T 返回值R    R apply(T t)
    // 其接口泛型类型与方法的参数与返回值相关
    // 第一个泛型类型与方法的参数类型一致，第二个泛型类型与方法的返回值类型一致
    public static Integer testFunction(Function<List<Integer>,Integer> function,List<Integer> list){
        return function.apply(list);
    }
}
